/**
 * Captain
 * © 2017 Captain copyright，All rights reserved.
 * http://www.sccaptain.com.cn
 * 
 * JAVA : 8
 * 文  件  名: DataDictionaryService.java
 * 创  建  人: sunfeng (sun.feng@sccaptain.com.cn)
 * 创建时间: 2017年7月4日 下午3:38:46
 * 版         本: 1.0.0
 * 备         注:
 * 修订历史:
 */
package com.material.c2c.sysconfig.service;

import java.util.List;

import com.material.c2c.sysconfig.entity.XTPZ_SJZD;
import com.material.c2c.sysconfig.model.DataDictionaryDTO;

/**
 * 数据字典业务接口。
 * 
 * @since 1.0
 * @version 1.0
 * @author sunfeng (sun.feng@sccaptain.com.cn)
 */
public interface DataDictionaryService {

  /**
   * 获取所有的数据字典项列表
   * 
   * @return 所有的数据字典项列表
   *
   * @since 1.0
   * @version 1.0
   * @author sunfeng (sun.feng@sccaptain.com.cn)
   */
  List<XTPZ_SJZD> findAllDataDictionaryItem();

  /**
   * 获取指定字典项下的所有字典值列表
   * 
   * @param itemId
   *          字典项id
   * @return 该字典项下的所有字典值列表
   *
   * @since 1.0
   * @version 1.0
   * @author sunfeng (sun.feng@sccaptain.com.cn)
   */
  List<DataDictionaryDTO> findDictionaryItemValueByItemId(String itemId);

  /**
   * 验证指定字典项下的值编码是否存在
   * 
   * @param itemId
   *          字典项id
   * @param valueId
   *          字典项值id
   * @param bm
   *          编码
   * @return
   *
   * @since 1.0
   * @version 1.0
   * @author sunfeng (sun.feng@sccaptain.com.cn)
   */
  boolean validateBmExists(String itemId, String bm, String valueId);

  /**
   * 新增数据字典项值信息
   * 
   * @param entity
   *          对应的实体类
   *
   * @since 1.0
   * @version 1.0
   * @author sunfeng (sun.feng@sccaptain.com.cn)
   */
  void add(XTPZ_SJZD entity);

  /**
   * 获取指定的字典项值列表中最大的编码长度值
   * 
   * @param itemValueList
   *          字典项值的列表
   * @return 当前字典项值列表中的最大的编码长度值
   *
   * @since 1.0
   * @version 1.0
   * @author sunfeng (sun.feng@sccaptain.com.cn)
   */
  int getMaxBmLengthByDictionaryItemValueList(List<DataDictionaryDTO> itemValueList);

  /**
   * 更新数据字典项值信息
   * 
   * @param sourceEntity
   *          对应的实体类
   * @param inputs
   *          页面的输入对象
   *
   * @since 1.0
   * @version 1.0
   * @author sunfeng (sun.feng@sccaptain.com.cn)
   */
  void update(XTPZ_SJZD sourceEntity, XTPZ_SJZD inputs);

  /**
   * 通过主键查询到对应的实体类信息
   * 
   * @param id
   *          主键
   * @return 主键对应的实体类
   *
   * @since 1.0
   * @version 1.0
   * @author sunfeng (sun.feng@sccaptain.com.cn)
   */
  XTPZ_SJZD getEntityById(String id);

  /**
   * 根据字典项的编码和字典值的编码返回特定的字典值对象
   * 
   * @param itemBm
   *          字典项的编码
   * @param valueBm
   *          字典值的编码
   * @return 返回查找到的特定的字典值对象，如没有找到则返回null
   *
   * @since 1.0
   * @version 1.0
   * @author sunfeng (sun.feng@sccaptain.com.cn)
   */
  XTPZ_SJZD findDictionaryItemValueEntity(String itemBm, String valueBm);
}
